#include "InboxCliente.h"
#include "Cliente.h"
#include "../common/Conversor.h"
#include <vector>
#include <iostream>
#include <queue>

InboxCliente::InboxCliente(Cliente *cliente, Socket *sock) {
	this->cliente = cliente;
	this->socket = sock;
	estado = true;
}

InboxCliente::~InboxCliente() {

}

void InboxCliente::Start(){
	estado = true;
	this->start();
}

void InboxCliente::Stop() {
	estado = false;
	delete(socket);
	this->stop();
}

void InboxCliente::ejecutar(){
	do {
		std::string rcv = "";
		try {
			rcv = socket->recibir();
		}catch(int){
			cliente->notificarPartidaPerdida();
		}
		if ( rcv != ""){
			if (rcv[0] == 'A'){
				cliente->cargarObjeto(Conversor::deSerializarObjeto(rcv));
			}
			if (rcv[0] == 'B'){ 
				std::vector<short> vec = Conversor::deSerializar(rcv);
				cliente->matarObjeto(vec[0]);
			}	
			if (rcv[0] == 'W'){
				cliente->notificarPartidaGanada();
			}
			if (rcv[0] == 'E'){ 
				cliente->notificarPartidaPerdida();
			}	
		}
	} while(estado);
}
